#ifndef JSONMAPEXCEPTION_HPP
#define JSONMAPEXCEPTION_HPP

#include <string>

namespace sh
{
/**
 * 所有异常类的基类
 */
class JsonMapException: public std::exception
{
public:
    explicit JsonMapException() = default;
    explicit JsonMapException(const std::string &error)
        : message(error)
    {}

    virtual std::string error() const
    {
        return message;
    }

private:
    std::string message;
};
/**
 * JSON数据格式异常，不是一个标准的json
 */
class JsonMapFormatException: public JsonMapException
{
public:
    explicit JsonMapFormatException(const std::string &error)
        : JsonMapException(error)
    {}
};
/**
 * key不存在时抛出异常
 */
class JsonMapNotExistException: public JsonMapException
{
public:
    explicit JsonMapNotExistException(const std::string &error)
        : JsonMapException(error)
    {}
};
/**
 * value类型不配对时抛出异常
 */
class JsonMapTypeException: public JsonMapException
{
public:
    explicit JsonMapTypeException(const std::string &error)
        : JsonMapException(error)
    {}
};
}

#endif //JSONMAPEXCEPTION_HPP
